/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb.dao.estagio;

import ejb.dao.concedente.Concedente;
import ejb.dao.relatorios.FichaFrequencia;
import ejb.dao.usuarios.Orientador;
import ejb.dao.usuarios.Supervisor;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;

/**
 *
 * @author Guilherme Silva
 * @author Pedro Siqueira
 */
@Entity
public class Estagio implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private boolean isObrigatorio;
    private double valorBolsa;
    private double valorAuxilioTransporte;
    private String nApoliceSeguro;
    private String empresaApoliceSeguro;
    private int curriculoSupervisor;
    private String tema;
    private String area;
    private double cargaHorariaDiaria;
    private double cargaHorariaSemanal;
    private double cargaHorariaTotalPrevista;
    private String inicioPrevisto;
    private String terminoPrevisto;
    private String justificativa;
    private String objetivo;
    private String metodologia;
    @OneToOne
    private Concedente concedente;
    @OneToOne
    private Orientador orientador;
    @OneToOne
    private Supervisor supervisor;
    @OneToOne
    private FichaFrequencia fichaFrequencia;
    @OneToOne
    private Cronograma cronograma;
    @OneToOne
    private HorarioEstagio horarioEstagio;

    public Estagio() {
    }

    public Estagio(Long id, boolean isObrigatorio, double valorBolsa, double valorAuxilioTransporte, String nApoliceSeguro, String empresaApoliceSeguro, int curriculoSupervisor, String tema, String area, double cargaHorariaDiaria, double cargaHorariaSemanal, double cargaHorariaTotalPrevista, String inicioPrevisto, String terminoPrevisto, String justificativa, String objetivo, String metodologia, Concedente concedente, Orientador orientador, Supervisor supervisor, FichaFrequencia fichaFrequencia, Cronograma cronograma, HorarioEstagio horarioEstagio) {
        this.id = id;
        this.isObrigatorio = isObrigatorio;
        this.valorBolsa = valorBolsa;
        this.valorAuxilioTransporte = valorAuxilioTransporte;
        this.nApoliceSeguro = nApoliceSeguro;
        this.empresaApoliceSeguro = empresaApoliceSeguro;
        this.curriculoSupervisor = curriculoSupervisor;
        this.tema = tema;
        this.area = area;
        this.cargaHorariaDiaria = cargaHorariaDiaria;
        this.cargaHorariaSemanal = cargaHorariaSemanal;
        this.cargaHorariaTotalPrevista = cargaHorariaTotalPrevista;
        this.inicioPrevisto = inicioPrevisto;
        this.terminoPrevisto = terminoPrevisto;
        this.justificativa = justificativa;
        this.objetivo = objetivo;
        this.metodologia = metodologia;
        this.concedente = concedente;
        this.orientador = orientador;
        this.supervisor = supervisor;
        this.fichaFrequencia = fichaFrequencia;
        this.cronograma = cronograma;
        this.horarioEstagio = horarioEstagio;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public double getCargaHorariaDiaria() {
        return cargaHorariaDiaria;
    }

    public void setCargaHorariaDiaria(double cargaHorariaDiaria) {
        this.cargaHorariaDiaria = cargaHorariaDiaria;
    }

    public double getCargaHorariaSemanal() {
        return cargaHorariaSemanal;
    }

    public void setCargaHorariaSemanal(double cargaHorariaSemanal) {
        this.cargaHorariaSemanal = cargaHorariaSemanal;
    }

    public double getCargaHorariaTotalPrevista() {
        return cargaHorariaTotalPrevista;
    }

    public void setCargaHorariaTotalPrevista(double cargaHorariaTotalPrevista) {
        this.cargaHorariaTotalPrevista = cargaHorariaTotalPrevista;
    }

    public Concedente getConcedente() {
        return concedente;
    }

    public void setConcedente(Concedente concedente) {
        this.concedente = concedente;
    }

    public Cronograma getCronograma() {
        return cronograma;
    }

    public void setCronograma(Cronograma cronograma) {
        this.cronograma = cronograma;
    }

    public int getCurriculoSupervisor() {
        return curriculoSupervisor;
    }

    public void setCurriculoSupervisor(int curriculoSupervisor) {
        this.curriculoSupervisor = curriculoSupervisor;
    }

    public String getEmpresaApoliceSeguro() {
        return empresaApoliceSeguro;
    }

    public void setEmpresaApoliceSeguro(String empresaApoliceSeguro) {
        this.empresaApoliceSeguro = empresaApoliceSeguro;
    }

    public FichaFrequencia getFichaFrequencia() {
        return fichaFrequencia;
    }

    public void setFichaFrequencia(FichaFrequencia fichaFrequencia) {
        this.fichaFrequencia = fichaFrequencia;
    }

    public HorarioEstagio getHorarioEstagio() {
        return horarioEstagio;
    }

    public void setHorarioEstagio(HorarioEstagio horarioEstagio) {
        this.horarioEstagio = horarioEstagio;
    }

    public String getInicioPrevisto() {
        return inicioPrevisto;
    }

    public void setInicioPrevisto(String inicioPrevisto) {
        this.inicioPrevisto = inicioPrevisto;
    }

    public boolean isIsObrigatorio() {
        return isObrigatorio;
    }

    public void setIsObrigatorio(boolean isObrigatorio) {
        this.isObrigatorio = isObrigatorio;
    }

    public String getJustificativa() {
        return justificativa;
    }

    public void setJustificativa(String justificativa) {
        this.justificativa = justificativa;
    }

    public String getMetodologia() {
        return metodologia;
    }

    public void setMetodologia(String metodologia) {
        this.metodologia = metodologia;
    }

    public String getnApoliceSeguro() {
        return nApoliceSeguro;
    }

    public void setnApoliceSeguro(String nApoliceSeguro) {
        this.nApoliceSeguro = nApoliceSeguro;
    }

    public String getObjetivo() {
        return objetivo;
    }

    public void setObjetivo(String objetivo) {
        this.objetivo = objetivo;
    }

    public Orientador getOrientador() {
        return orientador;
    }

    public void setOrientador(Orientador orientador) {
        this.orientador = orientador;
    }

    public Supervisor getSupervisor() {
        return supervisor;
    }

    public void setSupervisor(Supervisor supervisor) {
        this.supervisor = supervisor;
    }

    public String getTema() {
        return tema;
    }

    public void setTema(String tema) {
        this.tema = tema;
    }

    public String getTerminoPrevisto() {
        return terminoPrevisto;
    }

    public void setTerminoPrevisto(String terminoPrevisto) {
        this.terminoPrevisto = terminoPrevisto;
    }

    public double getValorAuxilioTransporte() {
        return valorAuxilioTransporte;
    }

    public void setValorAuxilioTransporte(double valorAuxilioTransporte) {
        this.valorAuxilioTransporte = valorAuxilioTransporte;
    }

    public double getValorBolsa() {
        return valorBolsa;
    }

    public void setValorBolsa(double valorBolsa) {
        this.valorBolsa = valorBolsa;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Estagio other = (Estagio) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if (this.isObrigatorio != other.isObrigatorio) {
            return false;
        }
        if (Double.doubleToLongBits(this.valorBolsa) != Double.doubleToLongBits(other.valorBolsa)) {
            return false;
        }
        if (Double.doubleToLongBits(this.valorAuxilioTransporte) != Double.doubleToLongBits(other.valorAuxilioTransporte)) {
            return false;
        }
        if ((this.nApoliceSeguro == null) ? (other.nApoliceSeguro != null) : !this.nApoliceSeguro.equals(other.nApoliceSeguro)) {
            return false;
        }
        if ((this.empresaApoliceSeguro == null) ? (other.empresaApoliceSeguro != null) : !this.empresaApoliceSeguro.equals(other.empresaApoliceSeguro)) {
            return false;
        }
        if (this.curriculoSupervisor != other.curriculoSupervisor) {
            return false;
        }
        if ((this.tema == null) ? (other.tema != null) : !this.tema.equals(other.tema)) {
            return false;
        }
        if ((this.area == null) ? (other.area != null) : !this.area.equals(other.area)) {
            return false;
        }
        if (Double.doubleToLongBits(this.cargaHorariaDiaria) != Double.doubleToLongBits(other.cargaHorariaDiaria)) {
            return false;
        }
        if (Double.doubleToLongBits(this.cargaHorariaSemanal) != Double.doubleToLongBits(other.cargaHorariaSemanal)) {
            return false;
        }
        if (Double.doubleToLongBits(this.cargaHorariaTotalPrevista) != Double.doubleToLongBits(other.cargaHorariaTotalPrevista)) {
            return false;
        }
        if ((this.inicioPrevisto == null) ? (other.inicioPrevisto != null) : !this.inicioPrevisto.equals(other.inicioPrevisto)) {
            return false;
        }
        if ((this.terminoPrevisto == null) ? (other.terminoPrevisto != null) : !this.terminoPrevisto.equals(other.terminoPrevisto)) {
            return false;
        }
        if ((this.justificativa == null) ? (other.justificativa != null) : !this.justificativa.equals(other.justificativa)) {
            return false;
        }
        if ((this.objetivo == null) ? (other.objetivo != null) : !this.objetivo.equals(other.objetivo)) {
            return false;
        }
        if ((this.metodologia == null) ? (other.metodologia != null) : !this.metodologia.equals(other.metodologia)) {
            return false;
        }
        if (this.concedente != other.concedente && (this.concedente == null || !this.concedente.equals(other.concedente))) {
            return false;
        }
        if (this.orientador != other.orientador && (this.orientador == null || !this.orientador.equals(other.orientador))) {
            return false;
        }
        if (this.supervisor != other.supervisor && (this.supervisor == null || !this.supervisor.equals(other.supervisor))) {
            return false;
        }
        if (this.fichaFrequencia != other.fichaFrequencia && (this.fichaFrequencia == null || !this.fichaFrequencia.equals(other.fichaFrequencia))) {
            return false;
        }
        if (this.cronograma != other.cronograma && (this.cronograma == null || !this.cronograma.equals(other.cronograma))) {
            return false;
        }
        if (this.horarioEstagio != other.horarioEstagio && (this.horarioEstagio == null || !this.horarioEstagio.equals(other.horarioEstagio))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 23 * hash + (this.id != null ? this.id.hashCode() : 0);
        hash = 23 * hash + (this.isObrigatorio ? 1 : 0);
        hash = 23 * hash + (int) (Double.doubleToLongBits(this.valorBolsa) ^ (Double.doubleToLongBits(this.valorBolsa) >>> 32));
        hash = 23 * hash + (int) (Double.doubleToLongBits(this.valorAuxilioTransporte) ^ (Double.doubleToLongBits(this.valorAuxilioTransporte) >>> 32));
        hash = 23 * hash + (this.nApoliceSeguro != null ? this.nApoliceSeguro.hashCode() : 0);
        hash = 23 * hash + (this.empresaApoliceSeguro != null ? this.empresaApoliceSeguro.hashCode() : 0);
        hash = 23 * hash + this.curriculoSupervisor;
        hash = 23 * hash + (this.tema != null ? this.tema.hashCode() : 0);
        hash = 23 * hash + (this.area != null ? this.area.hashCode() : 0);
        hash = 23 * hash + (int) (Double.doubleToLongBits(this.cargaHorariaDiaria) ^ (Double.doubleToLongBits(this.cargaHorariaDiaria) >>> 32));
        hash = 23 * hash + (int) (Double.doubleToLongBits(this.cargaHorariaSemanal) ^ (Double.doubleToLongBits(this.cargaHorariaSemanal) >>> 32));
        hash = 23 * hash + (int) (Double.doubleToLongBits(this.cargaHorariaTotalPrevista) ^ (Double.doubleToLongBits(this.cargaHorariaTotalPrevista) >>> 32));
        hash = 23 * hash + (this.inicioPrevisto != null ? this.inicioPrevisto.hashCode() : 0);
        hash = 23 * hash + (this.terminoPrevisto != null ? this.terminoPrevisto.hashCode() : 0);
        hash = 23 * hash + (this.justificativa != null ? this.justificativa.hashCode() : 0);
        hash = 23 * hash + (this.objetivo != null ? this.objetivo.hashCode() : 0);
        hash = 23 * hash + (this.metodologia != null ? this.metodologia.hashCode() : 0);
        hash = 23 * hash + (this.concedente != null ? this.concedente.hashCode() : 0);
        hash = 23 * hash + (this.orientador != null ? this.orientador.hashCode() : 0);
        hash = 23 * hash + (this.supervisor != null ? this.supervisor.hashCode() : 0);
        hash = 23 * hash + (this.fichaFrequencia != null ? this.fichaFrequencia.hashCode() : 0);
        hash = 23 * hash + (this.cronograma != null ? this.cronograma.hashCode() : 0);
        hash = 23 * hash + (this.horarioEstagio != null ? this.horarioEstagio.hashCode() : 0);
        return hash;
    }

}
